package models

import (
	"fmt"
	"qld2devservice/utils"
	"time"
)

// ChargerOrder 数据库订单表结构
type QldChargerOrder struct {
	Id              int64     `orm:"column(id);auto" description:"订单id"`
	ActualPrice     int64     `orm:"column(actual_price);null" description:"实际收费"`
	AddTime         time.Time `orm:"column(add_time);type(datetime);null"`
	BeginTime       time.Time `orm:"column(begin_time);type(datetime);null"`
	CouponId        int64     `orm:"column(coupon_id);null"`
	Des             string    `orm:"column(des);size(256);null"`
	Duration        int64     `orm:"column(duration);null" description:"充电时间"`
	Electricity     float32   `orm:"column(electricity);null;digits(11);decimals(3)" description:"充电电量"`
	EndTime         time.Time `orm:"column(end_time);type(datetime);null"`
	OrderPrice      int64     `orm:"column(order_price);null" description:"充电金额"`
	OrderSn         string    `orm:"column(order_sn);size(32);null"`
	OrderStatus     int64     `orm:"column(order_status);null" description:"0:进行中 1:完成 2.订单申诉中  3 完成（有过申述）4 完成（部分退款）。5 全额退款 完成 6打开失败 7用户强制停止"`
	OutletId        int64     `orm:"column(outlet_id);null"`
	DeviceId        int64     `orm:"column(device_id);null" description:"boxid 即充电箱id"`
	PayStatus       int64     `orm:"column(pay_status);null" description:"0:已支付 1:未支付"`
	PayType         int64     `orm:"column(pay_type);null" description:"0:钱包支付 1:微信支付"`
	PlanAmount      int64     `orm:"column(plan_amount);null"`
	PlanDuration    int64     `orm:"column(plan_duration);null"`
	PlanElectricity float32   `orm:"column(plan_electricity);null;digits(11);decimals(3)"`
	PriceId         int64     `orm:"column(price_id);null"`
	UserId          int64     `orm:"column(user_id);null"`
	//打开类型：
	//在设备类型为1即低速电瓶车或5即小交流充电时，openType=1为充满自动停止方式，openType=2时不会充满自动停止；
	//在设备类型为4即小直流充电时，openType=1为常规充电，openType=2为快速充电，openType=3为超级充电；
	//其它默认为0。
	OpenType  int64 `orm:"column(open_type);null" description:""`
	RentPrice int64 `orm:"column(rent_price);null" description:"租用金额"`
}

func GetRunningQldChargerOrderByOutletId(outletId int64) ([]QldChargerOrder, error) {
	var qldChargerOrders []QldChargerOrder
	//条件查询
	err := DB.Where("outlet_id = ? and order_status = 0", outletId).Find(&qldChargerOrders).Error
	if err != nil {
		newErr := utils.WrapError(err, "GetQldChargerOrderByOutletId:数据库获取设备失败,outletId="+fmt.Sprintln(outletId))
		utils.MyPrint(utils.PRINT_ERROR, newErr.Error(), newErr.Msg())
		return []QldChargerOrder{}, newErr
	}
	return qldChargerOrders, nil
}
